Przykad 8.2. Zastosowanie przeszukiwania w gb do znajdowania cieki powikszajcej
public boolean findAugmentingPath (VertexInfo[] vertices) {
   // Zacznij potencjaln ciek powikszajc od rda
   vertices[sourceIndex] = new VertexInfo (-1);
   Stack<Integer> path = new Stack<Integer>();
   path.push (sourceIndex);

   // Przetwrz krawdzie przednie z u; nastpnie sprbuj z krawdziami tylnymi
   VertexStructure struct[] = network.getEdgeStructure();
   while (!path.isEmpty()) {
      int u = path.pop();

      // Najpierw sprbuj postpi w przd...
      Iterator<EdgeInfo> it = struct[u].forward();
      while (it.hasNext()) {
         EdgeInfo ei = it.next();
         int v = ei.end;

         // Jeszcze nie odwiedzony i ma niewykorzystan przepustowo?
         // Zaplanuj zwikszenie
         if (vertices[v] == null && ei.capacity > ei.flow) {
             vertices[v] = new VertexInfo (u, FORWARD);

             if (v == sinkIndex) { return true; }   // mamy jeden!
             path.push(v);
         }
      }

      // Sprbuj tylnych krawdzi
      it = struct[u].backward();
      while (it.hasNext()) {
         // Sprbuj znale krawd wchodzc do u, ktrej przepyw
         // mona zredukowa
         EdgeInfo rei = it.next();
         int v = rei.start;

         // Teraz sprbuj z jeszcze nie odwiedzon krawdzi tyln
         // (nie moe to by ujcie!)
         if (vertices[v] == null && rei.flow > 0) {
            vertices[v] = new VertexInfo (u, BACKWARD);
            path.push(v);
         }
      }
   }

   // Nic z tego
   return false;
}
